package com.qujia.coupon.service;

import com.qujia.coupon.domain.CouponUser;
import com.qujia.coupon.domain.vo.CouponUserSumVo;

import java.util.List;

/**
 * 人员优惠劵Service接口
 * 
 * @author qujia
 * @date 2021-08-09
 */
public interface ICouponUserService
{
    /**
     * 查询人员优惠劵
     * 
     * @param id 人员优惠劵ID
     * @return 优惠劵
     */
    public CouponUser selectCouponUserById(Integer id);

    /**
     * 查询人员优惠劵列表
     * 
     * @param couponUser 人员优惠劵
     * @return 人员优惠劵集合
     */
    public List<CouponUser> selectCouponUserList(CouponUser couponUser);

    public List<Long> selectEnterPriseIdList(Long authorId);

    public CouponUserSumVo selectCouponUserSum(CouponUser couponUser);



    // 批量逻辑删除优惠券用户
    void batchLogicDeleteCouponUser(List<Integer> ids);

    // 逻辑删除优惠券用户
    void logicDeleteCouponUser(int id);
    /**
     * 新增人员优惠劵
     * 
     * @param couponUser 人员优惠劵
     * @return 结果
     */
    public int insertCouponUser(CouponUser  couponUser);

    /**
     * 修改人员优惠劵
     * 
     * @param couponUser 人员优惠劵
     * @return 结果
     */
    public int updateCouponUser(CouponUser  couponUser);

    /**
     * 批量删除人员优惠劵
     * 
     * @param ids 需要删除的人员优惠劵ID
     * @return 结果
     */
    public int deleteCouponUserByIds(String[] ids);

    int deleteCouponUserByIds(List<String> ids);

    /**
     * 删除优惠劵信息
     * 
     * @param id 优惠劵ID
     * @return 结果
     */
    public int deleteCouponUserById(Integer id);

    List<CouponUser> queryList(CouponUser couponUser);

    int incrCouponUserGiveCount(String mobilePhone, String issueId, int incr);

    /**
     * 批量回收通过其它活动发放的用户优惠劵
     * @param mobilePhone 手机号
     * @param activityType activityType
     * @param bizId 用户优惠劵关联的业务id
     * @param bizType 用户优惠劵关联的业务类型
     * @param failWhenUsed 优惠劵已使用时是否失败
     */
    void recoveryUserCoupon(String mobilePhone,int activityType,Long bizId,String bizType,boolean failWhenUsed);

}
